/*
 * Copyright (C) 2010 恒康信息科技有限公司
 * 版权所有
 */
package com.adb.util;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;

import com.jjmmbb.baoSudoku.Comm;

public class Util {

	/**
	 * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
	 */
	public static int dip2px(Context context, float dpValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (dpValue * scale + 0.5f);
	}

	/**
	 * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
	 */
	public static int px2dip(Context context, float pxValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (pxValue / scale + 0.5f);
	}

	// 二进制开关标记算法_生成标记算法:
	// 用二进制标记当前是否显示;1表示显示,0表示不显示
	// 例如,标记的是星期一至星期日 那几天有闹钟提醒
	// 例如,传入3 1 得到 10
	public static int MarkCodeByBinary(ArrayList<Integer> list) {
		int sum = 0;
		if (null != list) {
			for (int i : list) {
				sum += (int) Math.pow(2, i);
			}
		}
		return sum;
	}

	// 二进制开关标记算法_解码标记算法:
	// 用二进制标记当前是否显示;1表示显示,0表示不显示
	// 例如标记的是星期一至星期日 那几天有闹钟提醒
	// 例如,传入 8 得到 3 表示星期3才提醒
	// 例如,传入 10 得到 3 1 表示星期1 和星期3 才提醒
	public static ArrayList<Integer> MarkDecodeByBinary(int num) {
		int mi = num;
		ArrayList<Integer> list = new ArrayList<Integer>();
		while (num >= 1) {
			mi = (int) (Math.log(num) / Math.log(2));
			num = (int) (num - Math.pow(2, mi));
			list.add(mi);
		}
		return list;
	}

	// ---------------------------配置信息存取---------------------
	/**
	 * 从sharedpareferences获取配置信息:是否屏幕常亮,是否音效,是否第一次打开软件
	 */
	public static void getConfigFromPreferences(Activity activity) {
		// 获取系统配置
		SharedPreferences settings = activity.getSharedPreferences("avsudoku",
				Activity.MODE_PRIVATE);
		Comm.isFirst = settings.getBoolean("isFirst", true);
		Comm.isSound = settings.getBoolean("isSound", false);
		Comm.isWakeLock = settings.getBoolean("isWakeLock", false);
		Comm.isBuy = settings.getBoolean("isBuy", false);

		// Comm.isPure = settings.getBoolean("isPure", false);
	}

	/**
	 * 保存配置信息,是否屏幕常亮,是否音效,
	 */
	public static void saveConfig2Preferences(Activity activity) {

		SharedPreferences settings = activity.getSharedPreferences("avsudoku",
				Activity.MODE_PRIVATE);
		SharedPreferences.Editor editor = settings.edit(); // 取得编辑对象
		editor.putBoolean("isSound", Comm.isSound);// 添加值
		editor.putBoolean("isWakeLock", Comm.isWakeLock);// 添加值

		editor.commit();// 提交保存
	}

	/**
	 * 保存配置信息,是否第一次登陆
	 */
	public static void saveFirst2Preferences(Activity activity) {

		SharedPreferences settings = activity.getSharedPreferences("avsudoku",
				Activity.MODE_PRIVATE);
		SharedPreferences.Editor editor = settings.edit(); // 取得编辑对象
		editor.putBoolean("isFirst", Comm.isFirst);// 添加值

		editor.commit();// 提交保存
	}

	/**
	 * 保存配置信息,是否购买
	 */
	public static void saveBuy2Preferences(Activity activity) {

		SharedPreferences settings = activity.getSharedPreferences("avsudoku",
				Activity.MODE_PRIVATE);
		SharedPreferences.Editor editor = settings.edit(); // 取得编辑对象
		editor.putBoolean("isBuy", Comm.isBuy);// 添加值

		editor.commit();// 提交保存
	}

	/**
	 * 保存配置信息,是否纯洁
	 */
	public static void savePure2Preferences(Activity activity) {

		SharedPreferences settings = activity.getSharedPreferences("avsudoku",
				Activity.MODE_PRIVATE);
		SharedPreferences.Editor editor = settings.edit(); // 取得编辑对象
		editor.putBoolean("isPure", Comm.isPure);// 添加值

		editor.commit();// 提交保存
	}

	public static String secondFormat(int time) {
		int minute = time / 60;
		int second = time % 60;
		String str_second = second + "";
		if (10 > second) {
			str_second = "0" + second;
		}
		return minute + ":" + str_second;
	}

}
